package com.heima.service;

import com.heima.pojo.AlertValue;
import com.heima.pojo.Task;
import com.heima.pojo.TaskType;
import com.heima.pojo.dto.CreTaskDto;
import com.heima.pojo.dto.TaskPageDto;
import com.heima.pojo.vo.*;

import java.util.Date;
import java.util.List;

public interface TaskService {


    /**
     * 工单统计
     * @param first
     * @param last
     * @return
     */
    List<TaskReportInfoVo> taskReportInfo(Date first, Date last);

    /**
     * 新建工单
     * @param dto
     */
    void createTask(CreTaskDto dto);

    /**
     * 取消工单
     * @param taskId
     */
    void cancelTask(Integer taskId,CreTaskDto dto);

    /**
     * 工单状态统计
     * @param start
     * @param end
     * @return
     */
    List<TaskCountVo> collectReport(Date start, Date end);

    /**
     * 人员排名
     * @param start
     * @param end
     * @param isRepair
     * @param regionId
     * @return
     */
    List<UserWorkCountVo> userWorkTop10(Date start, Date end, Boolean isRepair, String regionId);

    /**
     * 工单分页
     * @param dto
     * @return
     */
    TaskPageVo pageQueryRepair(TaskPageDto dto);

    /**
     * 查询所有订单类型
     * @return
     */
    List<TaskType> queryAllType();

    /**
     * 获取所有订单状态
     * @return
     */
    List<TaskStatusVo> queryAllStatus();

    /**
     * 查看工单详情
     * @param taskId
     * @return
     */
    Task queryTaskInfo(Integer taskId);

    /**
     * 获取补货预警值
     * @param value
     * @return
     */
    Integer getSupplyAlertValue(Integer alertValue);

    /**
     * 补货详情
     */
    Task getSupplyInfo(Integer taskId);

    /**
     * 获取维修次数
     * @param start
     * @param end
     * @param innerCode
     * @return
     */
    Integer getRepairTimes(Date start, Date end, String innerCode);
}
